home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 101-125 / 108 / printpop / programmers_notes (.png) < prev    next >
ANSI Art File  |  1995-03-13  |  4KB  |  640x1104  |  4-bit (3 colors)
Labels: text | screenshot | font
OCR: *********** NOTES FOR PROGRAMMERS (IN NO PARTICULAR ORDER) *********** (1) Printer commands are sent to the printer as the appropriate escape command strings using the PrintString routine detailed in the RKM. Sending commands to the printer using the PrintCommand routine in the same source gives strange results: Where a printer command requires a "wait" action as defined in the various printer drivers, the printer. device sends out the "wait" character (usually $FD) INSTEAD of doing the appropriate wait. Example: Suppose that the "set margins" command is defined in the printer driver "data.c" file as "\xfd\x1b1L\x1bQq\xfd" (this is actually the printer is: default Epson setting), then the sequence that should be sent to the \xfd "wait" \x1b1L set left margin to 76 (don't ask me why 76!) \1bQq set right margin to 113 (again don't ask me why! ) \xfd "wait" When you use the PrintCommand routine from the RKM, however, the actual sequence that is sent is: } ... corresponding to character $FD (usually an italic "}") \x1b1L \x1bQq ... sets the left margin sets the right marign another character $FD This seems to me to be a bug somewhere in "printer. device". Anyway, the way to overcome it is to stick with the PrintString routine as outlined above. It means somewhat "messier" code for complex commands such as setting the margins, but at least it works! (2) While I'm on printer codes, there are two entries in the chart of ESCAPE sequences that are somewhat ambiguous: aSLRM (set L & R margins) is given variously as ESC[Pn1; Pn2s and ESC[n;ns and ESC[Pn; Pn2s (and there are probably others I haven't found yet!). The actual sequence is ESC[n1;n2s where n1-left margin and n2=right margin. The same confusion occurs over aSTBM (set top & bottom margins) where the sequence should be ESC[n1;n2r where n1=top margin and n2=bottom margin. (3) The artwork for the gadgets in this program were drawn firstly in DeluxePaint2, converted to brushes, and then converted into C structures using the Public Domain program called "Brush2C" available on Amicus 9. (I'm sorry to the author of that program, but I don't know his name. ) Be warned, however, that there is a bug in that program with large brushes - it only generates part of the C structure. I had to generate portions of some of my gadgets by hand because of the incomplete structure generation. (4) Mutual-exclude gadgets are a right royal pain in the bum! Even with the help of a number of articles written on the subject, they still have to be one of the flakiest things around! They have been implemented in this program in a way I haven't seen before, and there are several points that need to be highlighted : (a) The gadgets are defined as TOGGLESELECT in the gadget structures. (b) The SELECT state is manipulated by toggling the SELECT bit in the gadget flag. (c) The MutualExclude routine (MXGads) is designed to handle up to four gadgets. Where less than four gadgets are used, the unused "positions" are pointed to NULL-gadgets. Note that these are special gadgets defined as gadgets with null imagery. They are NOT just NULL! (5) The PRINTPOP program will never exit once it is installed. If you want to "de-install" the program, you'll have to include the appropriate code yourself. I might add that feature in a later version, but to be quite frank, I can't see any reason to de-install it!